package com.keda.dao;

import com.keda.model.BigType;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.ResultSetHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

public class BigTypeDao {

    /**
     * JDBC从数据库中读取所有的BigType
     * @return List集合
     */
    public List<BigType> queryBigType() {

        // 1. 建立连接
        Connection connection = null;
        try {
            // 1) 加载数据库驱动 -- 使用什么样数据库
            Class.forName("com.mysql.cj.jdbc.Driver");
            // 数据库访问地址 serverTimezone：时区，没有北京时区，只有上海
            // 解决中文乱码：useUnicode=true&characterEncoding=utf8
            String url = "jdbc:mysql://127.0.0.1:3306/db_ebuys?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false";
            // 数据库的访问账号
            String user = "root";
            // 数据库的访问密码
            String password = "123456";
            connection = DriverManager.getConnection(url, user, password);
            // 建议select后面不要写 *，原因：可读性差，可能会把不需要的数据查询到，影响查询性能
            String sql = "select id, name, remarks from t_bigtype";
            // 使用DBUtils工具类进行查询
            QueryRunner queryRunner = new QueryRunner();
            BeanListHandler<BigType> bigTypeBeanListHandler = new BeanListHandler<>(BigType.class);
            List<BigType> bigTypeList = queryRunner.query(connection, sql, bigTypeBeanListHandler);
            return bigTypeList;
        } catch (Exception e) {
            e.printStackTrace(); // 打印异常
            return new ArrayList<>(); // 返回空值
        }
    }

    private void queryForTraditional() {
        // 1. 建立连接
        Connection connection = null;
        try {
            // 1) 加载数据库驱动 -- 使用什么样数据库
            Class.forName("com.mysql.cj.jdbc.Driver");
            // 数据库访问地址 serverTimezone：时区，没有北京时区，只有上海
            // 解决中文乱码：useUnicode=true&characterEncoding=utf8
            String url = "jdbc:mysql://127.0.0.1:3306/db_ebuys?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false";
            // 数据库的访问账号
            String user = "root";
            // 数据库的访问密码
            String password = "123456";
            connection = DriverManager.getConnection(url, user, password);
            // 建议select后面不要写 *，原因：可读性差，可能会把不需要的数据查询到，影响查询性能
            String sql = "select id, name, remarks from t_bigtype";
            // 2. 创建Statement
            PreparedStatement preparedStatement = connection.prepareStatement(sql);

            // 3. 查询参数的设置
            // 3. Statement执行SQL返回一个结果
            ResultSet resultSet = preparedStatement.executeQuery();
            // 4. 解析结果
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace(); // 打印异常
        }
    }

}
